package com.zg.common.lock.service;

/**
 * <p>Description: </p>
 *
 * @author zhanfeng.liang
 * @since 2025/5/20 19:19
 */

import java.util.concurrent.TimeUnit;

/**
 * 分布式锁服务
 */
public interface LockService {
    /**
     * 阻塞获取锁
     * @param lockKey 锁名
     */
    void lock(String lockKey);

    /**
     * 释放锁
     * @param lockKey 锁名
     */
    void unlock(String lockKey);

    /**
     * 尝试获取锁
     * @param lockKey 锁名
     * @param waitTime 最多等待时间
     * @param leaseTime 锁自动释放时间
     * @param unit 时间单位
     * @return 是否获取到锁
     */
    boolean tryLock(String lockKey, long waitTime, long leaseTime, TimeUnit unit);
}